package com_1;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class ReflectDemo4 {//反射类测试类4
    public static void main(String[] args) throws Exception {//main方法入口并抛出异常
        Class<?> c = Class.forName("com.Student");//获取类的class文件对象
        Constructor<?> cs = c.getConstructor();//通过class对象获取类的构造方法
        cs.setAccessible(true);//暴力反射取消私有修饰付访问权限
        Object o = cs.newInstance();//通过newInstance方法法获取对象
        Method[] declaredMethods = c.getDeclaredMethods();
        //通过getdeclaredMethod方法获取方法的数组
        for (Method  declaredMethod : declaredMethods) {//
            System.out.println(declaredMethod);//通过增强for循环遍历得到的所有方法
        }
        Method show1 = c.getMethod("show");
        //通过getMethod方法获取单个公共的方法
        show1.setAccessible(true);//暴力反射取消私有访问权限
        Object invoke = show1.invoke(o);//通过获得的方法对象调用invoke方法调用方法
        System.out.println(invoke);

    }
}
